package com.momo.common.req.sysSetting.authority;

import com.momo.common.error.BaseReq;
import com.momo.mapper.dataobject.RoleDO;
import lombok.*;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

/**
 * Created by MOMO on 2019/3/22.
 */
@Getter
@Setter
@ToString
@Builder
@NoArgsConstructor
@AllArgsConstructor
//@EqualsAndHashCode(of = {"id"})
public class RoleReq extends BaseReq{
    /**
     * id 角色id.
     */
    private Long id;
    /**
     * groupId 第三方组 kagome-momo-open-source默认为1.
     */
    private Long groupId;
    /**
     * remark 备注.
     */
    private String remark;
    /**
     * sysRoleName 角色名称.
     */
    @NotBlank(message = "角色名称 必填",groups = {Add.class,Modify.class})
    private String sysRoleName;
    /**
     * sysRoleType 角色的类型，0：管理员角色，1：普通用户 2其他.
     */
    @NotBlank(message = "角色的类型 必填",groups = {Add.class,Modify.class})
    private String sysRoleType;
    /**
     * sysRoleUuid 唯一，32位字符串，查询用.
     */
    @NotBlank(message = "sysRoleUuid 必填",groups = {Modify.class,Status.class,Detail.class})
    private String sysRoleUuid;
    /**
     * sysRoleStatus 是否被禁用  0否 1禁用.
     */
    @NotBlank(message = "是否被禁用 必填",groups = {Add.class,Modify.class,Status.class})
    private String sysRoleStatus;
    public static RoleReqRedis roleReqRedis(RoleDO roleDO){
        RoleReqRedis roleReqRedis=RoleReqRedis.builder().sysRoleName(roleDO.getSysRoleName()).sysRoleStatus(roleDO.getSysRoleStatus())
                .sysRoleType(roleDO.getSysRoleType()).groupId(roleDO.getGroupId()).id(roleDO.getId()).build();
        return roleReqRedis;
    }

    @Getter
    @Setter
    @ToString
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
//@EqualsAndHashCode(of = {"id"})
    public static class RoleReqRedis{
        /**
         * id 角色id.
         */
        private Long id;
        /**
         * groupId 第三方组 kagome-momo-open-source默认为1.
         */
        private Long groupId;
        /**
         * remark 备注.
         */
        private String remark;
        /**
         * sysRoleName 角色名称.
         */
        private String sysRoleName;
        /**
         * sysRoleType 角色的类型，0：管理员角色，1：普通用户 2其他.
         */
        private String sysRoleType;
        /**
         * sysRoleUuid 唯一，32位字符串，查询用.
         */
        private String sysRoleUuid;
        /**
         * sysRoleStatus 是否被禁用  0否 1禁用.
         */
        private String sysRoleStatus;
    }
}
